// export waves , timer , freesides , playersides , queue , apequeue , Setup ; starting var i ; begin continued ;
   0: CALL 5 0 0
// end ;
   4: END
// export function continued ; var i ; begin
   5: LD_INT 0
   7: PPUSH
   8: PPUSH
// timer = 0 ;
   9: LD_ADDR_EXP 2
  13: PUSH
  14: LD_INT 0
  16: ST_TO_ADDR
// waves = 0 ;
  17: LD_ADDR_EXP 1
  21: PUSH
  22: LD_INT 0
  24: ST_TO_ADDR
// queue = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
  25: LD_ADDR_EXP 5
  29: PUSH
  30: LD_INT 0
  32: PUSH
  33: LD_INT 0
  35: PUSH
  36: LD_INT 0
  38: PUSH
  39: LD_INT 0
  41: PUSH
  42: LD_INT 0
  44: PUSH
  45: LD_INT 0
  47: PUSH
  48: LD_INT 0
  50: PUSH
  51: LD_INT 0
  53: PUSH
  54: EMPTY
  55: LIST
  56: LIST
  57: LIST
  58: LIST
  59: LIST
  60: LIST
  61: LIST
  62: LIST
  63: ST_TO_ADDR
// apequeue = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
  64: LD_ADDR_EXP 6
  68: PUSH
  69: LD_INT 0
  71: PUSH
  72: LD_INT 0
  74: PUSH
  75: LD_INT 0
  77: PUSH
  78: LD_INT 0
  80: PUSH
  81: LD_INT 0
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 0
  92: PUSH
  93: EMPTY
  94: LIST
  95: LIST
  96: LIST
  97: LIST
  98: LIST
  99: LIST
 100: LIST
 101: LIST
 102: ST_TO_ADDR
// game_speed = 4 ;
 103: LD_ADDR_OWVAR 65
 107: PUSH
 108: LD_INT 4
 110: ST_TO_ADDR
// RandomizeAll ( ) ;
 111: CALL_OW 11
// Setup = [ 1 , 4 , rand ( 1 , 6 ) , 2 , 1 , 1 ] ;
 115: LD_ADDR_EXP 7
 119: PUSH
 120: LD_INT 1
 122: PUSH
 123: LD_INT 4
 125: PUSH
 126: LD_INT 1
 128: PPUSH
 129: LD_INT 6
 131: PPUSH
 132: CALL_OW 12
 136: PUSH
 137: LD_INT 2
 139: PUSH
 140: LD_INT 1
 142: PUSH
 143: LD_INT 1
 145: PUSH
 146: EMPTY
 147: LIST
 148: LIST
 149: LIST
 150: LIST
 151: LIST
 152: LIST
 153: ST_TO_ADDR
// for i = 1 to 8 do
 154: LD_ADDR_VAR 0 2
 158: PUSH
 159: DOUBLE
 160: LD_INT 1
 162: DEC
 163: ST_TO_ADDR
 164: LD_INT 8
 166: PUSH
 167: FOR_TO
 168: IFFALSE 184
// ChangeSideFog ( i , 1 ) ;
 170: LD_VAR 0 2
 174: PPUSH
 175: LD_INT 1
 177: PPUSH
 178: CALL_OW 343
 182: GO 167
 184: POP
 185: POP
// Menu ;
 186: CALL 356 0 0
// if Setup [ 3 ] = 7 then
 190: LD_EXP 7
 194: PUSH
 195: LD_INT 3
 197: ARRAY
 198: PUSH
 199: LD_INT 7
 201: EQUAL
 202: IFFALSE 233
// Setup = Replace ( Setup , 3 , rand ( 1 , 6 ) ) ;
 204: LD_ADDR_EXP 7
 208: PUSH
 209: LD_EXP 7
 213: PPUSH
 214: LD_INT 3
 216: PPUSH
 217: LD_INT 1
 219: PPUSH
 220: LD_INT 6
 222: PPUSH
 223: CALL_OW 12
 227: PPUSH
 228: CALL_OW 1
 232: ST_TO_ADDR
// your_side = Setup [ 1 ] ;
 233: LD_ADDR_OWVAR 2
 237: PUSH
 238: LD_EXP 7
 242: PUSH
 243: LD_INT 1
 245: ARRAY
 246: ST_TO_ADDR
// ChangeSideFog ( Setup [ 1 ] , 2 ) ;
 247: LD_EXP 7
 251: PUSH
 252: LD_INT 1
 254: ARRAY
 255: PPUSH
 256: LD_INT 2
 258: PPUSH
 259: CALL_OW 343
// playersides = [ ] ;
 263: LD_ADDR_EXP 4
 267: PUSH
 268: EMPTY
 269: ST_TO_ADDR
// freesides = [ ] ;
 270: LD_ADDR_EXP 3
 274: PUSH
 275: EMPTY
 276: ST_TO_ADDR
// for i = 1 to 8 do
 277: LD_ADDR_VAR 0 2
 281: PUSH
 282: DOUBLE
 283: LD_INT 1
 285: DEC
 286: ST_TO_ADDR
 287: LD_INT 8
 289: PUSH
 290: FOR_TO
 291: IFFALSE 345
// if i = Setup [ 1 ] then
 293: LD_VAR 0 2
 297: PUSH
 298: LD_EXP 7
 302: PUSH
 303: LD_INT 1
 305: ARRAY
 306: EQUAL
 307: IFFALSE 327
// playersides = playersides ^ i else
 309: LD_ADDR_EXP 4
 313: PUSH
 314: LD_EXP 4
 318: PUSH
 319: LD_VAR 0 2
 323: ADD
 324: ST_TO_ADDR
 325: GO 343
// freesides = freesides ^ i ;
 327: LD_ADDR_EXP 3
 331: PUSH
 332: LD_EXP 3
 336: PUSH
 337: LD_VAR 0 2
 341: ADD
 342: ST_TO_ADDR
 343: GO 290
 345: POP
 346: POP
// start ;
 347: CALL 1432 0 0
// end ;
 351: LD_VAR 0 1
 355: RET
// export function Menu ; begin
 356: LD_INT 0
 358: PPUSH
// case Query ( MenuVertical ) of 1 :
 359: LD_STRING MenuVertical
 361: PPUSH
 362: CALL_OW 97
 366: PUSH
 367: LD_INT 1
 369: DOUBLE
 370: EQUAL
 371: IFTRUE 375
 373: GO 378
 375: POP
// begin end ; 2 :
 376: GO 430
 378: LD_INT 2
 380: DOUBLE
 381: EQUAL
 382: IFTRUE 386
 384: GO 399
 386: POP
// begin changeMap ( 1 , __AM\01 ) ;
 387: LD_STRING 1
 389: PPUSH
 390: LD_STRING __AM\01
 392: PPUSH
 393: CALL_OW 340
// end ; 3 :
 397: GO 430
 399: LD_INT 3
 401: DOUBLE
 402: EQUAL
 403: IFTRUE 407
 405: GO 414
 407: POP
// begin Settings ;
 408: CALL 435 0 0
// end ; 4 :
 412: GO 430
 414: LD_INT 4
 416: DOUBLE
 417: EQUAL
 418: IFTRUE 422
 420: GO 429
 422: POP
// begin ExitGame ( ) ;
 423: CALL_OW 341
// end ; end ;
 427: GO 430
 429: POP
// end ;
 430: LD_VAR 0 1
 434: RET
// export function Settings ; begin
 435: LD_INT 0
 437: PPUSH
// case Query ( SettingsVertical ) of 1 :
 438: LD_STRING SettingsVertical
 440: PPUSH
 441: CALL_OW 97
 445: PUSH
 446: LD_INT 1
 448: DOUBLE
 449: EQUAL
 450: IFTRUE 454
 452: GO 461
 454: POP
// begin Menu ;
 455: CALL 356 0 0
// end ; 2 :
 459: GO 695
 461: LD_INT 2
 463: DOUBLE
 464: EQUAL
 465: IFTRUE 469
 467: GO 502
 469: POP
// begin Setup = Replace ( Setup , 1 , Query ( Side ) ) ;
 470: LD_ADDR_EXP 7
 474: PUSH
 475: LD_EXP 7
 479: PPUSH
 480: LD_INT 1
 482: PPUSH
 483: LD_STRING Side
 485: PPUSH
 486: CALL_OW 97
 490: PPUSH
 491: CALL_OW 1
 495: ST_TO_ADDR
// Settings ;
 496: CALL 435 0 0
// end ; 3 :
 500: GO 695
 502: LD_INT 3
 504: DOUBLE
 505: EQUAL
 506: IFTRUE 510
 508: GO 543
 510: POP
// begin Setup = Replace ( Setup , 2 , Query ( Nation ) ) ;
 511: LD_ADDR_EXP 7
 515: PUSH
 516: LD_EXP 7
 520: PPUSH
 521: LD_INT 2
 523: PPUSH
 524: LD_STRING Nation
 526: PPUSH
 527: CALL_OW 97
 531: PPUSH
 532: CALL_OW 1
 536: ST_TO_ADDR
// Settings ;
 537: CALL 435 0 0
// end ; 4 :
 541: GO 695
 543: LD_INT 4
 545: DOUBLE
 546: EQUAL
 547: IFTRUE 551
 549: GO 584
 551: POP
// begin Setup = Replace ( Setup , 3 , Query ( PositionVertical ) ) ;
 552: LD_ADDR_EXP 7
 556: PUSH
 557: LD_EXP 7
 561: PPUSH
 562: LD_INT 3
 564: PPUSH
 565: LD_STRING PositionVertical
 567: PPUSH
 568: CALL_OW 97
 572: PPUSH
 573: CALL_OW 1
 577: ST_TO_ADDR
// Settings ;
 578: CALL 435 0 0
// end ; 5 :
 582: GO 695
 584: LD_INT 5
 586: DOUBLE
 587: EQUAL
 588: IFTRUE 592
 590: GO 625
 592: POP
// begin Setup = Replace ( Setup , 4 , Query ( People ) ) ;
 593: LD_ADDR_EXP 7
 597: PUSH
 598: LD_EXP 7
 602: PPUSH
 603: LD_INT 4
 605: PPUSH
 606: LD_STRING People
 608: PPUSH
 609: CALL_OW 97
 613: PPUSH
 614: CALL_OW 1
 618: ST_TO_ADDR
// Settings ;
 619: CALL 435 0 0
// end ; 6 :
 623: GO 695
 625: LD_INT 6
 627: DOUBLE
 628: EQUAL
 629: IFTRUE 633
 631: GO 640
 633: POP
// begin Respawn ;
 634: CALL 700 0 0
// end ; 7 :
 638: GO 695
 640: LD_INT 7
 642: DOUBLE
 643: EQUAL
 644: IFTRUE 648
 646: GO 694
 648: POP
// begin Setup = [ 1 , 4 , rand ( 1 , 6 ) , 2 , 1 , 1 ] ;
 649: LD_ADDR_EXP 7
 653: PUSH
 654: LD_INT 1
 656: PUSH
 657: LD_INT 4
 659: PUSH
 660: LD_INT 1
 662: PPUSH
 663: LD_INT 6
 665: PPUSH
 666: CALL_OW 12
 670: PUSH
 671: LD_INT 2
 673: PUSH
 674: LD_INT 1
 676: PUSH
 677: LD_INT 1
 679: PUSH
 680: EMPTY
 681: LIST
 682: LIST
 683: LIST
 684: LIST
 685: LIST
 686: LIST
 687: ST_TO_ADDR
// Settings ;
 688: CALL 435 0 0
// end ; end ;
 692: GO 695
 694: POP
// end ;
 695: LD_VAR 0 1
 699: RET
// export function Respawn ; begin
 700: LD_INT 0
 702: PPUSH
// case Query ( Respawn ) of 1 :
 703: LD_STRING Respawn
 705: PPUSH
 706: CALL_OW 97
 710: PUSH
 711: LD_INT 1
 713: DOUBLE
 714: EQUAL
 715: IFTRUE 719
 717: GO 726
 719: POP
// begin Settings ;
 720: CALL 435 0 0
// end ; 2 :
 724: GO 809
 726: LD_INT 2
 728: DOUBLE
 729: EQUAL
 730: IFTRUE 734
 732: GO 767
 734: POP
// begin Setup = Replace ( Setup , 5 , Query ( HumanRe ) ) ;
 735: LD_ADDR_EXP 7
 739: PUSH
 740: LD_EXP 7
 744: PPUSH
 745: LD_INT 5
 747: PPUSH
 748: LD_STRING HumanRe
 750: PPUSH
 751: CALL_OW 97
 755: PPUSH
 756: CALL_OW 1
 760: ST_TO_ADDR
// Respawn ;
 761: CALL 700 0 0
// end ; 3 :
 765: GO 809
 767: LD_INT 3
 769: DOUBLE
 770: EQUAL
 771: IFTRUE 775
 773: GO 808
 775: POP
// begin Setup = Replace ( Setup , 6 , Query ( ApeRe ) ) ;
 776: LD_ADDR_EXP 7
 780: PUSH
 781: LD_EXP 7
 785: PPUSH
 786: LD_INT 6
 788: PPUSH
 789: LD_STRING ApeRe
 791: PPUSH
 792: CALL_OW 97
 796: PPUSH
 797: CALL_OW 1
 801: ST_TO_ADDR
// Respawn ;
 802: CALL 700 0 0
// end ; end ;
 806: GO 809
 808: POP
// end ;
 809: LD_VAR 0 1
 813: RET
// every 0 0$02.5 trigger FilterAllUnits ( [ [ f_side , setup [ 1 ] ] , [ f_inside ] ] ) do var bs , uns , i , l ;
 814: LD_INT 22
 816: PUSH
 817: LD_EXP 7
 821: PUSH
 822: LD_INT 1
 824: ARRAY
 825: PUSH
 826: EMPTY
 827: LIST
 828: LIST
 829: PUSH
 830: LD_INT 54
 832: PUSH
 833: EMPTY
 834: LIST
 835: PUSH
 836: EMPTY
 837: LIST
 838: LIST
 839: PPUSH
 840: CALL_OW 69
 844: IFFALSE 1429
 846: GO 848
 848: DISABLE
 849: LD_INT 0
 851: PPUSH
 852: PPUSH
 853: PPUSH
 854: PPUSH
// begin bs = FilterAllUnits ( [ [ f_side , setup [ 1 ] ] , [ f_or , [ f_btype , b_armoury ] , [ f_btype , b_barracks ] , [ f_btype , b_breastwork ] , [ f_btype , b_turret ] ] , [ f_occupied ] ] ) ;
 855: LD_ADDR_VAR 0 1
 859: PUSH
 860: LD_INT 22
 862: PUSH
 863: LD_EXP 7
 867: PUSH
 868: LD_INT 1
 870: ARRAY
 871: PUSH
 872: EMPTY
 873: LIST
 874: LIST
 875: PUSH
 876: LD_INT 2
 878: PUSH
 879: LD_INT 30
 881: PUSH
 882: LD_INT 4
 884: PUSH
 885: EMPTY
 886: LIST
 887: LIST
 888: PUSH
 889: LD_INT 30
 891: PUSH
 892: LD_INT 5
 894: PUSH
 895: EMPTY
 896: LIST
 897: LIST
 898: PUSH
 899: LD_INT 30
 901: PUSH
 902: LD_INT 31
 904: PUSH
 905: EMPTY
 906: LIST
 907: LIST
 908: PUSH
 909: LD_INT 30
 911: PUSH
 912: LD_INT 33
 914: PUSH
 915: EMPTY
 916: LIST
 917: LIST
 918: PUSH
 919: EMPTY
 920: LIST
 921: LIST
 922: LIST
 923: LIST
 924: LIST
 925: PUSH
 926: LD_INT 59
 928: PUSH
 929: EMPTY
 930: LIST
 931: PUSH
 932: EMPTY
 933: LIST
 934: LIST
 935: LIST
 936: PPUSH
 937: CALL_OW 69
 941: ST_TO_ADDR
// if bs then
 942: LD_VAR 0 1
 946: IFFALSE 1012
// for i in bs do
 948: LD_ADDR_VAR 0 3
 952: PUSH
 953: LD_VAR 0 1
 957: PUSH
 958: FOR_IN
 959: IFFALSE 1010
// begin uns = UnitsInside ( i ) ;
 961: LD_ADDR_VAR 0 2
 965: PUSH
 966: LD_VAR 0 3
 970: PPUSH
 971: CALL_OW 313
 975: ST_TO_ADDR
// for l in uns do
 976: LD_ADDR_VAR 0 4
 980: PUSH
 981: LD_VAR 0 2
 985: PUSH
 986: FOR_IN
 987: IFFALSE 1006
// AddExperience ( l , 1 , 11 ) ;
 989: LD_VAR 0 4
 993: PPUSH
 994: LD_INT 1
 996: PPUSH
 997: LD_INT 11
 999: PPUSH
1000: CALL_OW 492
1004: GO 986
1006: POP
1007: POP
// end ;
1008: GO 958
1010: POP
1011: POP
// bs = FilterAllUnits ( [ [ f_side , setup [ 1 ] ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_occupied ] ] ) ;
1012: LD_ADDR_VAR 0 1
1016: PUSH
1017: LD_INT 22
1019: PUSH
1020: LD_EXP 7
1024: PUSH
1025: LD_INT 1
1027: ARRAY
1028: PUSH
1029: EMPTY
1030: LIST
1031: LIST
1032: PUSH
1033: LD_INT 2
1035: PUSH
1036: LD_INT 30
1038: PUSH
1039: LD_INT 0
1041: PUSH
1042: EMPTY
1043: LIST
1044: LIST
1045: PUSH
1046: LD_INT 30
1048: PUSH
1049: LD_INT 1
1051: PUSH
1052: EMPTY
1053: LIST
1054: LIST
1055: PUSH
1056: EMPTY
1057: LIST
1058: LIST
1059: LIST
1060: PUSH
1061: LD_INT 59
1063: PUSH
1064: EMPTY
1065: LIST
1066: PUSH
1067: EMPTY
1068: LIST
1069: LIST
1070: LIST
1071: PPUSH
1072: CALL_OW 69
1076: ST_TO_ADDR
// if bs then
1077: LD_VAR 0 1
1081: IFFALSE 1147
// for i in bs do
1083: LD_ADDR_VAR 0 3
1087: PUSH
1088: LD_VAR 0 1
1092: PUSH
1093: FOR_IN
1094: IFFALSE 1145
// begin uns = UnitsInside ( i ) ;
1096: LD_ADDR_VAR 0 2
1100: PUSH
1101: LD_VAR 0 3
1105: PPUSH
1106: CALL_OW 313
1110: ST_TO_ADDR
// for l in uns do
1111: LD_ADDR_VAR 0 4
1115: PUSH
1116: LD_VAR 0 2
1120: PUSH
1121: FOR_IN
1122: IFFALSE 1141
// AddExperience ( l , 2 , 11 ) ;
1124: LD_VAR 0 4
1128: PPUSH
1129: LD_INT 2
1131: PPUSH
1132: LD_INT 11
1134: PPUSH
1135: CALL_OW 492
1139: GO 1121
1141: POP
1142: POP
// end ;
1143: GO 1093
1145: POP
1146: POP
// bs = FilterAllUnits ( [ [ f_side , setup [ 1 ] ] , [ f_or , [ f_btype , b_factory ] , [ f_btype , b_workshop ] ] , [ f_occupied ] ] ) ;
1147: LD_ADDR_VAR 0 1
1151: PUSH
1152: LD_INT 22
1154: PUSH
1155: LD_EXP 7
1159: PUSH
1160: LD_INT 1
1162: ARRAY
1163: PUSH
1164: EMPTY
1165: LIST
1166: LIST
1167: PUSH
1168: LD_INT 2
1170: PUSH
1171: LD_INT 30
1173: PUSH
1174: LD_INT 3
1176: PUSH
1177: EMPTY
1178: LIST
1179: LIST
1180: PUSH
1181: LD_INT 30
1183: PUSH
1184: LD_INT 2
1186: PUSH
1187: EMPTY
1188: LIST
1189: LIST
1190: PUSH
1191: EMPTY
1192: LIST
1193: LIST
1194: LIST
1195: PUSH
1196: LD_INT 59
1198: PUSH
1199: EMPTY
1200: LIST
1201: PUSH
1202: EMPTY
1203: LIST
1204: LIST
1205: LIST
1206: PPUSH
1207: CALL_OW 69
1211: ST_TO_ADDR
// if bs then
1212: LD_VAR 0 1
1216: IFFALSE 1282
// for i in bs do
1218: LD_ADDR_VAR 0 3
1222: PUSH
1223: LD_VAR 0 1
1227: PUSH
1228: FOR_IN
1229: IFFALSE 1280
// begin uns = UnitsInside ( i ) ;
1231: LD_ADDR_VAR 0 2
1235: PUSH
1236: LD_VAR 0 3
1240: PPUSH
1241: CALL_OW 313
1245: ST_TO_ADDR
// for l in uns do
1246: LD_ADDR_VAR 0 4
1250: PUSH
1251: LD_VAR 0 2
1255: PUSH
1256: FOR_IN
1257: IFFALSE 1276
// AddExperience ( l , 3 , 11 ) ;
1259: LD_VAR 0 4
1263: PPUSH
1264: LD_INT 3
1266: PPUSH
1267: LD_INT 11
1269: PPUSH
1270: CALL_OW 492
1274: GO 1256
1276: POP
1277: POP
// end ;
1278: GO 1228
1280: POP
1281: POP
// bs = FilterAllUnits ( [ [ f_side , setup [ 1 ] ] , [ f_or , [ f_btype , b_lab ] , [ f_btype , b_lab_half ] , [ f_btype , b_lab_full ] ] , [ f_occupied ] ] ) ;
1282: LD_ADDR_VAR 0 1
1286: PUSH
1287: LD_INT 22
1289: PUSH
1290: LD_EXP 7
1294: PUSH
1295: LD_INT 1
1297: ARRAY
1298: PUSH
1299: EMPTY
1300: LIST
1301: LIST
1302: PUSH
1303: LD_INT 2
1305: PUSH
1306: LD_INT 30
1308: PUSH
1309: LD_INT 6
1311: PUSH
1312: EMPTY
1313: LIST
1314: LIST
1315: PUSH
1316: LD_INT 30
1318: PUSH
1319: LD_INT 7
1321: PUSH
1322: EMPTY
1323: LIST
1324: LIST
1325: PUSH
1326: LD_INT 30
1328: PUSH
1329: LD_INT 8
1331: PUSH
1332: EMPTY
1333: LIST
1334: LIST
1335: PUSH
1336: EMPTY
1337: LIST
1338: LIST
1339: LIST
1340: LIST
1341: PUSH
1342: LD_INT 59
1344: PUSH
1345: EMPTY
1346: LIST
1347: PUSH
1348: EMPTY
1349: LIST
1350: LIST
1351: LIST
1352: PPUSH
1353: CALL_OW 69
1357: ST_TO_ADDR
// if bs then
1358: LD_VAR 0 1
1362: IFFALSE 1428
// for i in bs do
1364: LD_ADDR_VAR 0 3
1368: PUSH
1369: LD_VAR 0 1
1373: PUSH
1374: FOR_IN
1375: IFFALSE 1426
// begin uns = UnitsInside ( i ) ;
1377: LD_ADDR_VAR 0 2
1381: PUSH
1382: LD_VAR 0 3
1386: PPUSH
1387: CALL_OW 313
1391: ST_TO_ADDR
// for l in uns do
1392: LD_ADDR_VAR 0 4
1396: PUSH
1397: LD_VAR 0 2
1401: PUSH
1402: FOR_IN
1403: IFFALSE 1422
// AddExperience ( l , 4 , 11 ) ;
1405: LD_VAR 0 4
1409: PPUSH
1410: LD_INT 4
1412: PPUSH
1413: LD_INT 11
1415: PPUSH
1416: CALL_OW 492
1420: GO 1402
1422: POP
1423: POP
// end ;
1424: GO 1374
1426: POP
1427: POP
// enable ;
1428: ENABLE
// end ;
1429: PPOPN 4
1431: END
// export function start ; var i , l , k , id , cls , pos , n ; begin
1432: LD_INT 0
1434: PPUSH
1435: PPUSH
1436: PPUSH
1437: PPUSH
1438: PPUSH
1439: PPUSH
1440: PPUSH
1441: PPUSH
// pos = [ leftmid , lefts , leftright , rightmid , rights , rightleft ] ;
1442: LD_ADDR_VAR 0 7
1446: PUSH
1447: LD_INT 14
1449: PUSH
1450: LD_INT 12
1452: PUSH
1453: LD_INT 8
1455: PUSH
1456: LD_INT 15
1458: PUSH
1459: LD_INT 13
1461: PUSH
1462: LD_INT 9
1464: PUSH
1465: EMPTY
1466: LIST
1467: LIST
1468: LIST
1469: LIST
1470: LIST
1471: LIST
1472: ST_TO_ADDR
// cls = [ 1 , 2 , 3 , 4 ] ;
1473: LD_ADDR_VAR 0 6
1477: PUSH
1478: LD_INT 1
1480: PUSH
1481: LD_INT 2
1483: PUSH
1484: LD_INT 3
1486: PUSH
1487: LD_INT 4
1489: PUSH
1490: EMPTY
1491: LIST
1492: LIST
1493: LIST
1494: LIST
1495: ST_TO_ADDR
// if Setup [ 4 ] = 1 then
1496: LD_EXP 7
1500: PUSH
1501: LD_INT 4
1503: ARRAY
1504: PUSH
1505: LD_INT 1
1507: EQUAL
1508: IFFALSE 1518
// n = 7 ;
1510: LD_ADDR_VAR 0 8
1514: PUSH
1515: LD_INT 7
1517: ST_TO_ADDR
// if Setup [ 4 ] = 2 then
1518: LD_EXP 7
1522: PUSH
1523: LD_INT 4
1525: ARRAY
1526: PUSH
1527: LD_INT 2
1529: EQUAL
1530: IFFALSE 1540
// n = 10 ;
1532: LD_ADDR_VAR 0 8
1536: PUSH
1537: LD_INT 10
1539: ST_TO_ADDR
// if Setup [ 4 ] = 3 then
1540: LD_EXP 7
1544: PUSH
1545: LD_INT 4
1547: ARRAY
1548: PUSH
1549: LD_INT 3
1551: EQUAL
1552: IFFALSE 1562
// n = 13 ;
1554: LD_ADDR_VAR 0 8
1558: PUSH
1559: LD_INT 13
1561: ST_TO_ADDR
// if Setup [ 2 ] = 4 then
1562: LD_EXP 7
1566: PUSH
1567: LD_INT 2
1569: ARRAY
1570: PUSH
1571: LD_INT 4
1573: EQUAL
1574: IFFALSE 1605
// Setup = Replace ( Setup , 2 , rand ( 1 , 3 ) ) ;
1576: LD_ADDR_EXP 7
1580: PUSH
1581: LD_EXP 7
1585: PPUSH
1586: LD_INT 2
1588: PPUSH
1589: LD_INT 1
1591: PPUSH
1592: LD_INT 3
1594: PPUSH
1595: CALL_OW 12
1599: PPUSH
1600: CALL_OW 1
1604: ST_TO_ADDR
// for i = 1 to n do
1605: LD_ADDR_VAR 0 2
1609: PUSH
1610: DOUBLE
1611: LD_INT 1
1613: DEC
1614: ST_TO_ADDR
1615: LD_VAR 0 8
1619: PUSH
1620: FOR_TO
1621: IFFALSE 1743
// begin uc_side = Setup [ 1 ] ;
1623: LD_ADDR_OWVAR 20
1627: PUSH
1628: LD_EXP 7
1632: PUSH
1633: LD_INT 1
1635: ARRAY
1636: ST_TO_ADDR
// uc_nation = Setup [ 2 ] ;
1637: LD_ADDR_OWVAR 21
1641: PUSH
1642: LD_EXP 7
1646: PUSH
1647: LD_INT 2
1649: ARRAY
1650: ST_TO_ADDR
// hc_name =  ;
1651: LD_ADDR_OWVAR 26
1655: PUSH
1656: LD_STRING 
1658: ST_TO_ADDR
// hc_class = cls [ i mod 5 ] ;
1659: LD_ADDR_OWVAR 28
1663: PUSH
1664: LD_VAR 0 6
1668: PUSH
1669: LD_VAR 0 2
1673: PUSH
1674: LD_INT 5
1676: MOD
1677: ARRAY
1678: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
1679: LD_ADDR_OWVAR 27
1683: PUSH
1684: LD_INT 1
1686: PPUSH
1687: LD_INT 2
1689: PPUSH
1690: CALL_OW 12
1694: ST_TO_ADDR
// id = createhuman ;
1695: LD_ADDR_VAR 0 5
1699: PUSH
1700: CALL_OW 44
1704: ST_TO_ADDR
// PlaceUnitArea ( id , pos [ Setup [ 3 ] ] , false ) ;
1705: LD_VAR 0 5
1709: PPUSH
1710: LD_VAR 0 7
1714: PUSH
1715: LD_EXP 7
1719: PUSH
1720: LD_INT 3
1722: ARRAY
1723: ARRAY
1724: PPUSH
1725: LD_INT 0
1727: PPUSH
1728: CALL_OW 49
// CenterNowOnUnits ( id ) ;
1732: LD_VAR 0 5
1736: PPUSH
1737: CALL_OW 87
// end ;
1741: GO 1620
1743: POP
1744: POP
// end ;
1745: LD_VAR 0 1
1749: RET
// every 0 0$01 do var i , k , j , l ;
1750: GO 1752
1752: DISABLE
1753: LD_INT 0
1755: PPUSH
1756: PPUSH
1757: PPUSH
1758: PPUSH
// begin i = 95 ;
1759: LD_ADDR_VAR 0 1
1763: PUSH
1764: LD_INT 95
1766: ST_TO_ADDR
// k = 107 ;
1767: LD_ADDR_VAR 0 2
1771: PUSH
1772: LD_INT 107
1774: ST_TO_ADDR
// j = 188 ;
1775: LD_ADDR_VAR 0 3
1779: PUSH
1780: LD_INT 188
1782: ST_TO_ADDR
// l = 201 ;
1783: LD_ADDR_VAR 0 4
1787: PUSH
1788: LD_INT 201
1790: ST_TO_ADDR
// repeat wait ( 0 0$0.1 ) ;
1791: LD_INT 4
1793: PPUSH
1794: CALL_OW 67
// SetAreaMapShow ( Area02 , 2 ) ;
1798: LD_INT 2
1800: PPUSH
1801: LD_INT 2
1803: PPUSH
1804: CALL_OW 424
// SetAreaMapShow ( Area03 , 2 ) ;
1808: LD_INT 3
1810: PPUSH
1811: LD_INT 2
1813: PPUSH
1814: CALL_OW 424
// MoveAreaXY ( Area02 , i - 2 , 4 ) ;
1818: LD_INT 2
1820: PPUSH
1821: LD_VAR 0 1
1825: PUSH
1826: LD_INT 2
1828: MINUS
1829: PPUSH
1830: LD_INT 4
1832: PPUSH
1833: CALL_OW 425
// MoveAreaXY ( Area03 , k , 4 ) ;
1837: LD_INT 3
1839: PPUSH
1840: LD_VAR 0 2
1844: PPUSH
1845: LD_INT 4
1847: PPUSH
1848: CALL_OW 425
// SetAreaMapShow ( Area04 , 3 ) ;
1852: LD_INT 4
1854: PPUSH
1855: LD_INT 3
1857: PPUSH
1858: CALL_OW 424
// SetAreaMapShow ( Area05 , 3 ) ;
1862: LD_INT 5
1864: PPUSH
1865: LD_INT 3
1867: PPUSH
1868: CALL_OW 424
// MoveAreaXY ( Area04 , i + 1 , 10 ) ;
1872: LD_INT 4
1874: PPUSH
1875: LD_VAR 0 1
1879: PUSH
1880: LD_INT 1
1882: PLUS
1883: PPUSH
1884: LD_INT 10
1886: PPUSH
1887: CALL_OW 425
// MoveAreaXY ( Area05 , k + 3 , 10 ) ;
1891: LD_INT 5
1893: PPUSH
1894: LD_VAR 0 2
1898: PUSH
1899: LD_INT 3
1901: PLUS
1902: PPUSH
1903: LD_INT 10
1905: PPUSH
1906: CALL_OW 425
// SetAreaMapShow ( Area06 , 4 ) ;
1910: LD_INT 6
1912: PPUSH
1913: LD_INT 4
1915: PPUSH
1916: CALL_OW 424
// SetAreaMapShow ( Area07 , 4 ) ;
1920: LD_INT 7
1922: PPUSH
1923: LD_INT 4
1925: PPUSH
1926: CALL_OW 424
// MoveAreaXY ( Area06 , j , 192 ) ;
1930: LD_INT 6
1932: PPUSH
1933: LD_VAR 0 3
1937: PPUSH
1938: LD_INT 192
1940: PPUSH
1941: CALL_OW 425
// MoveAreaXY ( Area07 , l , 192 ) ;
1945: LD_INT 7
1947: PPUSH
1948: LD_VAR 0 4
1952: PPUSH
1953: LD_INT 192
1955: PPUSH
1956: CALL_OW 425
// SetAreaMapShow ( Area10 , 5 ) ;
1960: LD_INT 10
1962: PPUSH
1963: LD_INT 5
1965: PPUSH
1966: CALL_OW 424
// SetAreaMapShow ( Area11 , 5 ) ;
1970: LD_INT 11
1972: PPUSH
1973: LD_INT 5
1975: PPUSH
1976: CALL_OW 424
// MoveAreaXY ( Area10 , i + 6 , 18 ) ;
1980: LD_INT 10
1982: PPUSH
1983: LD_VAR 0 1
1987: PUSH
1988: LD_INT 6
1990: PLUS
1991: PPUSH
1992: LD_INT 18
1994: PPUSH
1995: CALL_OW 425
// MoveAreaXY ( Area11 , k + 8 , 18 ) ;
1999: LD_INT 11
2001: PPUSH
2002: LD_VAR 0 2
2006: PUSH
2007: LD_INT 8
2009: PLUS
2010: PPUSH
2011: LD_INT 18
2013: PPUSH
2014: CALL_OW 425
// SetAreaMapShow ( oilleft , 7 ) ;
2018: LD_INT 18
2020: PPUSH
2021: LD_INT 7
2023: PPUSH
2024: CALL_OW 424
// SetAreaMapShow ( oilright , 7 ) ;
2028: LD_INT 19
2030: PPUSH
2031: LD_INT 7
2033: PPUSH
2034: CALL_OW 424
// MoveAreaXY ( oilleft , j - 21 , 150 ) ;
2038: LD_INT 18
2040: PPUSH
2041: LD_VAR 0 3
2045: PUSH
2046: LD_INT 21
2048: MINUS
2049: PPUSH
2050: LD_INT 150
2052: PPUSH
2053: CALL_OW 425
// MoveAreaXY ( oilright , l - 21 , 150 ) ;
2057: LD_INT 19
2059: PPUSH
2060: LD_VAR 0 4
2064: PUSH
2065: LD_INT 21
2067: MINUS
2068: PPUSH
2069: LD_INT 150
2071: PPUSH
2072: CALL_OW 425
// SetAreaMapShow ( sibleft , 6 ) ;
2076: LD_INT 16
2078: PPUSH
2079: LD_INT 6
2081: PPUSH
2082: CALL_OW 424
// SetAreaMapShow ( sibright , 6 ) ;
2086: LD_INT 17
2088: PPUSH
2089: LD_INT 6
2091: PPUSH
2092: CALL_OW 424
// MoveAreaXY ( sibleft , j - 46 , 100 ) ;
2096: LD_INT 16
2098: PPUSH
2099: LD_VAR 0 3
2103: PUSH
2104: LD_INT 46
2106: MINUS
2107: PPUSH
2108: LD_INT 100
2110: PPUSH
2111: CALL_OW 425
// MoveAreaXY ( sibright , l - 46 , 100 ) ;
2115: LD_INT 17
2117: PPUSH
2118: LD_VAR 0 4
2122: PUSH
2123: LD_INT 46
2125: MINUS
2126: PPUSH
2127: LD_INT 100
2129: PPUSH
2130: CALL_OW 425
// SetAreaMapShow ( monkeleft , 8 ) ;
2134: LD_INT 20
2136: PPUSH
2137: LD_INT 8
2139: PPUSH
2140: CALL_OW 424
// SetAreaMapShow ( monkeright , 8 ) ;
2144: LD_INT 21
2146: PPUSH
2147: LD_INT 8
2149: PPUSH
2150: CALL_OW 424
// MoveAreaXY ( monkeleft , j - 4 , 182 ) ;
2154: LD_INT 20
2156: PPUSH
2157: LD_VAR 0 3
2161: PUSH
2162: LD_INT 4
2164: MINUS
2165: PPUSH
2166: LD_INT 182
2168: PPUSH
2169: CALL_OW 425
// MoveAreaXY ( monkeright , l - 4 , 182 ) ;
2173: LD_INT 21
2175: PPUSH
2176: LD_VAR 0 4
2180: PUSH
2181: LD_INT 4
2183: MINUS
2184: PPUSH
2185: LD_INT 182
2187: PPUSH
2188: CALL_OW 425
// if i = 15 then
2192: LD_VAR 0 1
2196: PUSH
2197: LD_INT 15
2199: EQUAL
2200: IFFALSE 2210
// i = 95 ;
2202: LD_ADDR_VAR 0 1
2206: PUSH
2207: LD_INT 95
2209: ST_TO_ADDR
// if k = 187 then
2210: LD_VAR 0 2
2214: PUSH
2215: LD_INT 187
2217: EQUAL
2218: IFFALSE 2228
// k = 107 ;
2220: LD_ADDR_VAR 0 2
2224: PUSH
2225: LD_INT 107
2227: ST_TO_ADDR
// if j = 108 then
2228: LD_VAR 0 3
2232: PUSH
2233: LD_INT 108
2235: EQUAL
2236: IFFALSE 2246
// j = 188 ;
2238: LD_ADDR_VAR 0 3
2242: PUSH
2243: LD_INT 188
2245: ST_TO_ADDR
// if l = 281 then
2246: LD_VAR 0 4
2250: PUSH
2251: LD_INT 281
2253: EQUAL
2254: IFFALSE 2264
// l = 201 ;
2256: LD_ADDR_VAR 0 4
2260: PUSH
2261: LD_INT 201
2263: ST_TO_ADDR
// i = i - 1 ;
2264: LD_ADDR_VAR 0 1
2268: PUSH
2269: LD_VAR 0 1
2273: PUSH
2274: LD_INT 1
2276: MINUS
2277: ST_TO_ADDR
// k = k + 1 ;
2278: LD_ADDR_VAR 0 2
2282: PUSH
2283: LD_VAR 0 2
2287: PUSH
2288: LD_INT 1
2290: PLUS
2291: ST_TO_ADDR
// j = j - 1 ;
2292: LD_ADDR_VAR 0 3
2296: PUSH
2297: LD_VAR 0 3
2301: PUSH
2302: LD_INT 1
2304: MINUS
2305: ST_TO_ADDR
// l = l + 1 ;
2306: LD_ADDR_VAR 0 4
2310: PUSH
2311: LD_VAR 0 4
2315: PUSH
2316: LD_INT 1
2318: PLUS
2319: ST_TO_ADDR
// until i = 400 end ;
2320: LD_VAR 0 1
2324: PUSH
2325: LD_INT 400
2327: EQUAL
2328: IFFALSE 1791
2330: PPOPN 4
2332: END
// every 1 1$00 do
2333: GO 2335
2335: DISABLE
// begin waves = waves + 1 ;
2336: LD_ADDR_EXP 1
2340: PUSH
2341: LD_EXP 1
2345: PUSH
2346: LD_INT 1
2348: PLUS
2349: ST_TO_ADDR
// enable ;
2350: ENABLE
// end ;
2351: END
// every 0 0$03 do var i , j , techs , midtechs , latetechs ;
2352: GO 2354
2354: DISABLE
2355: LD_INT 0
2357: PPUSH
2358: PPUSH
2359: PPUSH
2360: PPUSH
2361: PPUSH
// begin techs = [ 32 , 27 , 36 , 66 , 57 , 69 , 39 , 54 , 63 , 48 , 51 , 60 ] ;
2362: LD_ADDR_VAR 0 3
2366: PUSH
2367: LD_INT 32
2369: PUSH
2370: LD_INT 27
2372: PUSH
2373: LD_INT 36
2375: PUSH
2376: LD_INT 66
2378: PUSH
2379: LD_INT 57
2381: PUSH
2382: LD_INT 69
2384: PUSH
2385: LD_INT 39
2387: PUSH
2388: LD_INT 54
2390: PUSH
2391: LD_INT 63
2393: PUSH
2394: LD_INT 48
2396: PUSH
2397: LD_INT 51
2399: PUSH
2400: LD_INT 60
2402: PUSH
2403: EMPTY
2404: LIST
2405: LIST
2406: LIST
2407: LIST
2408: LIST
2409: LIST
2410: LIST
2411: LIST
2412: LIST
2413: LIST
2414: LIST
2415: LIST
2416: ST_TO_ADDR
// midtechs = [ 67 , 58 , 55 , 64 , 49 , 52 , 61 , 43 ] ;
2417: LD_ADDR_VAR 0 4
2421: PUSH
2422: LD_INT 67
2424: PUSH
2425: LD_INT 58
2427: PUSH
2428: LD_INT 55
2430: PUSH
2431: LD_INT 64
2433: PUSH
2434: LD_INT 49
2436: PUSH
2437: LD_INT 52
2439: PUSH
2440: LD_INT 61
2442: PUSH
2443: LD_INT 43
2445: PUSH
2446: EMPTY
2447: LIST
2448: LIST
2449: LIST
2450: LIST
2451: LIST
2452: LIST
2453: LIST
2454: LIST
2455: ST_TO_ADDR
// latetechs = [ 40 , 71 , 68 , 59 , 31 , 56 , 26 , 29 , 65 , 5 , 30 , 28 , 50 , 53 , 33 , 62 ] ;
2456: LD_ADDR_VAR 0 5
2460: PUSH
2461: LD_INT 40
2463: PUSH
2464: LD_INT 71
2466: PUSH
2467: LD_INT 68
2469: PUSH
2470: LD_INT 59
2472: PUSH
2473: LD_INT 31
2475: PUSH
2476: LD_INT 56
2478: PUSH
2479: LD_INT 26
2481: PUSH
2482: LD_INT 29
2484: PUSH
2485: LD_INT 65
2487: PUSH
2488: LD_INT 5
2490: PUSH
2491: LD_INT 30
2493: PUSH
2494: LD_INT 28
2496: PUSH
2497: LD_INT 50
2499: PUSH
2500: LD_INT 53
2502: PUSH
2503: LD_INT 33
2505: PUSH
2506: LD_INT 62
2508: PUSH
2509: EMPTY
2510: LIST
2511: LIST
2512: LIST
2513: LIST
2514: LIST
2515: LIST
2516: LIST
2517: LIST
2518: LIST
2519: LIST
2520: LIST
2521: LIST
2522: LIST
2523: LIST
2524: LIST
2525: LIST
2526: ST_TO_ADDR
// if waves = 20 then
2527: LD_EXP 1
2531: PUSH
2532: LD_INT 20
2534: EQUAL
2535: IFFALSE 2610
// begin for i = 1 to freesides do
2537: LD_ADDR_VAR 0 1
2541: PUSH
2542: DOUBLE
2543: LD_INT 1
2545: DEC
2546: ST_TO_ADDR
2547: LD_EXP 3
2551: PUSH
2552: FOR_TO
2553: IFFALSE 2608
// for j = 0 to techs do
2555: LD_ADDR_VAR 0 2
2559: PUSH
2560: DOUBLE
2561: LD_INT 0
2563: DEC
2564: ST_TO_ADDR
2565: LD_VAR 0 3
2569: PUSH
2570: FOR_TO
2571: IFFALSE 2604
// SetTech ( techs [ j ] , freesides [ i ] , 2 ) ;
2573: LD_VAR 0 3
2577: PUSH
2578: LD_VAR 0 2
2582: ARRAY
2583: PPUSH
2584: LD_EXP 3
2588: PUSH
2589: LD_VAR 0 1
2593: ARRAY
2594: PPUSH
2595: LD_INT 2
2597: PPUSH
2598: CALL_OW 322
2602: GO 2570
2604: POP
2605: POP
2606: GO 2552
2608: POP
2609: POP
// end ; if waves = 30 then
2610: LD_EXP 1
2614: PUSH
2615: LD_INT 30
2617: EQUAL
2618: IFFALSE 2693
// begin for i = 1 to freesides do
2620: LD_ADDR_VAR 0 1
2624: PUSH
2625: DOUBLE
2626: LD_INT 1
2628: DEC
2629: ST_TO_ADDR
2630: LD_EXP 3
2634: PUSH
2635: FOR_TO
2636: IFFALSE 2691
// for j = 0 to midtechs do
2638: LD_ADDR_VAR 0 2
2642: PUSH
2643: DOUBLE
2644: LD_INT 0
2646: DEC
2647: ST_TO_ADDR
2648: LD_VAR 0 4
2652: PUSH
2653: FOR_TO
2654: IFFALSE 2687
// SetTech ( techs [ j ] , freesides [ i ] , 2 ) ;
2656: LD_VAR 0 3
2660: PUSH
2661: LD_VAR 0 2
2665: ARRAY
2666: PPUSH
2667: LD_EXP 3
2671: PUSH
2672: LD_VAR 0 1
2676: ARRAY
2677: PPUSH
2678: LD_INT 2
2680: PPUSH
2681: CALL_OW 322
2685: GO 2653
2687: POP
2688: POP
2689: GO 2635
2691: POP
2692: POP
// end ; if waves = 40 then
2693: LD_EXP 1
2697: PUSH
2698: LD_INT 40
2700: EQUAL
2701: IFFALSE 2778
// begin for i = 1 to freesides do
2703: LD_ADDR_VAR 0 1
2707: PUSH
2708: DOUBLE
2709: LD_INT 1
2711: DEC
2712: ST_TO_ADDR
2713: LD_EXP 3
2717: PUSH
2718: FOR_TO
2719: IFFALSE 2774
// for j = 0 to latetechs do
2721: LD_ADDR_VAR 0 2
2725: PUSH
2726: DOUBLE
2727: LD_INT 0
2729: DEC
2730: ST_TO_ADDR
2731: LD_VAR 0 5
2735: PUSH
2736: FOR_TO
2737: IFFALSE 2770
// SetTech ( techs [ j ] , freesides [ i ] , 2 ) ;
2739: LD_VAR 0 3
2743: PUSH
2744: LD_VAR 0 2
2748: ARRAY
2749: PPUSH
2750: LD_EXP 3
2754: PUSH
2755: LD_VAR 0 1
2759: ARRAY
2760: PPUSH
2761: LD_INT 2
2763: PPUSH
2764: CALL_OW 322
2768: GO 2736
2770: POP
2771: POP
2772: GO 2718
2774: POP
2775: POP
// exit ;
2776: GO 2779
// end ; enable ;
2778: ENABLE
// end ;
2779: PPOPN 5
2781: END
// every 1 1$00 do var id , i , k , l , m , skill , c , time ;
2782: GO 2784
2784: DISABLE
2785: LD_INT 0
2787: PPUSH
2788: PPUSH
2789: PPUSH
2790: PPUSH
2791: PPUSH
2792: PPUSH
2793: PPUSH
2794: PPUSH
// begin l = [ 42 , 43 , 44 , 45 , 46 ] ;
2795: LD_ADDR_VAR 0 4
2799: PUSH
2800: LD_INT 42
2802: PUSH
2803: LD_INT 43
2805: PUSH
2806: LD_INT 44
2808: PUSH
2809: LD_INT 45
2811: PUSH
2812: LD_INT 46
2814: PUSH
2815: EMPTY
2816: LIST
2817: LIST
2818: LIST
2819: LIST
2820: LIST
2821: ST_TO_ADDR
// m = [ 21 , 22 , 23 , 24 ] ;
2822: LD_ADDR_VAR 0 5
2826: PUSH
2827: LD_INT 21
2829: PUSH
2830: LD_INT 22
2832: PUSH
2833: LD_INT 23
2835: PUSH
2836: LD_INT 24
2838: PUSH
2839: EMPTY
2840: LIST
2841: LIST
2842: LIST
2843: LIST
2844: ST_TO_ADDR
// i = 0 ;
2845: LD_ADDR_VAR 0 2
2849: PUSH
2850: LD_INT 0
2852: ST_TO_ADDR
// repeat i = waves ;
2853: LD_ADDR_VAR 0 2
2857: PUSH
2858: LD_EXP 1
2862: ST_TO_ADDR
// time = 1 1$00 ;
2863: LD_ADDR_VAR 0 8
2867: PUSH
2868: LD_INT 2100
2870: ST_TO_ADDR
// skill = ( i / 6 ) mod 11 ;
2871: LD_ADDR_VAR 0 6
2875: PUSH
2876: LD_VAR 0 2
2880: PUSH
2881: LD_INT 6
2883: DIVREAL
2884: PUSH
2885: LD_INT 11
2887: MOD
2888: ST_TO_ADDR
// uc_nation = 3 ;
2889: LD_ADDR_OWVAR 21
2893: PUSH
2894: LD_INT 3
2896: ST_TO_ADDR
// hc_class = 1 ;
2897: LD_ADDR_OWVAR 28
2901: PUSH
2902: LD_INT 1
2904: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
2905: LD_ADDR_OWVAR 31
2909: PUSH
2910: LD_VAR 0 6
2914: PUSH
2915: LD_VAR 0 6
2919: PUSH
2920: LD_VAR 0 6
2924: PUSH
2925: LD_VAR 0 6
2929: PUSH
2930: EMPTY
2931: LIST
2932: LIST
2933: LIST
2934: LIST
2935: ST_TO_ADDR
// hc_name =  ;
2936: LD_ADDR_OWVAR 26
2940: PUSH
2941: LD_STRING 
2943: ST_TO_ADDR
// hc_sex = rand ( sex_male , sex_female ) ;
2944: LD_ADDR_OWVAR 27
2948: PUSH
2949: LD_INT 1
2951: PPUSH
2952: LD_INT 2
2954: PPUSH
2955: CALL_OW 12
2959: ST_TO_ADDR
// vc_control = control_computer ;
2960: LD_ADDR_OWVAR 38
2964: PUSH
2965: LD_INT 3
2967: ST_TO_ADDR
// if waves >= 30 then
2968: LD_EXP 1
2972: PUSH
2973: LD_INT 30
2975: GREATEREQUAL
2976: IFFALSE 2988
// vc_engine = engine_siberite else
2978: LD_ADDR_OWVAR 39
2982: PUSH
2983: LD_INT 3
2985: ST_TO_ADDR
2986: GO 2996
// vc_engine = engine_combustion ;
2988: LD_ADDR_OWVAR 39
2992: PUSH
2993: LD_INT 1
2995: ST_TO_ADDR
// for k = 0 to i do
2996: LD_ADDR_VAR 0 3
3000: PUSH
3001: DOUBLE
3002: LD_INT 0
3004: DEC
3005: ST_TO_ADDR
3006: LD_VAR 0 2
3010: PUSH
3011: FOR_TO
3012: IFFALSE 3055
// begin uc_side = freesides [ 1 ] ;
3014: LD_ADDR_OWVAR 20
3018: PUSH
3019: LD_EXP 3
3023: PUSH
3024: LD_INT 1
3026: ARRAY
3027: ST_TO_ADDR
// id = createhuman ;
3028: LD_ADDR_VAR 0 1
3032: PUSH
3033: CALL_OW 44
3037: ST_TO_ADDR
// PlaceUnitArea ( id , Area02 , false ) ;
3038: LD_VAR 0 1
3042: PPUSH
3043: LD_INT 2
3045: PPUSH
3046: LD_INT 0
3048: PPUSH
3049: CALL_OW 49
// end ;
3053: GO 3011
3055: POP
3056: POP
// for k = 10 to 0 + i do
3057: LD_ADDR_VAR 0 3
3061: PUSH
3062: DOUBLE
3063: LD_INT 10
3065: DEC
3066: ST_TO_ADDR
3067: LD_INT 0
3069: PUSH
3070: LD_VAR 0 2
3074: PLUS
3075: PUSH
3076: FOR_TO
3077: IFFALSE 3160
// begin vc_chassis = m [ k mod 5 ] ;
3079: LD_ADDR_OWVAR 37
3083: PUSH
3084: LD_VAR 0 5
3088: PUSH
3089: LD_VAR 0 3
3093: PUSH
3094: LD_INT 5
3096: MOD
3097: ARRAY
3098: ST_TO_ADDR
// vc_weapon = l [ k mod 4 ] ;
3099: LD_ADDR_OWVAR 40
3103: PUSH
3104: LD_VAR 0 4
3108: PUSH
3109: LD_VAR 0 3
3113: PUSH
3114: LD_INT 4
3116: MOD
3117: ARRAY
3118: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
3119: LD_ADDR_OWVAR 20
3123: PUSH
3124: LD_EXP 3
3128: PUSH
3129: LD_INT 1
3131: ARRAY
3132: ST_TO_ADDR
// id = createvehicle ;
3133: LD_ADDR_VAR 0 1
3137: PUSH
3138: CALL_OW 45
3142: ST_TO_ADDR
// PlaceUnitArea ( id , Area04 , false ) ;
3143: LD_VAR 0 1
3147: PPUSH
3148: LD_INT 4
3150: PPUSH
3151: LD_INT 0
3153: PPUSH
3154: CALL_OW 49
// end ;
3158: GO 3076
3160: POP
3161: POP
// for k = 30 to 0 + i do
3162: LD_ADDR_VAR 0 3
3166: PUSH
3167: DOUBLE
3168: LD_INT 30
3170: DEC
3171: ST_TO_ADDR
3172: LD_INT 0
3174: PUSH
3175: LD_VAR 0 2
3179: PLUS
3180: PUSH
3181: FOR_TO
3182: IFFALSE 3265
// begin vc_chassis = m [ k mod 5 ] ;
3184: LD_ADDR_OWVAR 37
3188: PUSH
3189: LD_VAR 0 5
3193: PUSH
3194: LD_VAR 0 3
3198: PUSH
3199: LD_INT 5
3201: MOD
3202: ARRAY
3203: ST_TO_ADDR
// vc_weapon = l [ k mod 6 ] ;
3204: LD_ADDR_OWVAR 40
3208: PUSH
3209: LD_VAR 0 4
3213: PUSH
3214: LD_VAR 0 3
3218: PUSH
3219: LD_INT 6
3221: MOD
3222: ARRAY
3223: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
3224: LD_ADDR_OWVAR 20
3228: PUSH
3229: LD_EXP 3
3233: PUSH
3234: LD_INT 1
3236: ARRAY
3237: ST_TO_ADDR
// id = createvehicle ;
3238: LD_ADDR_VAR 0 1
3242: PUSH
3243: CALL_OW 45
3247: ST_TO_ADDR
// PlaceUnitArea ( id , Area10 , false ) ;
3248: LD_VAR 0 1
3252: PPUSH
3253: LD_INT 10
3255: PPUSH
3256: LD_INT 0
3258: PPUSH
3259: CALL_OW 49
// end ;
3263: GO 3181
3265: POP
3266: POP
// for k = 40 to i do
3267: LD_ADDR_VAR 0 3
3271: PUSH
3272: DOUBLE
3273: LD_INT 40
3275: DEC
3276: ST_TO_ADDR
3277: LD_VAR 0 2
3281: PUSH
3282: FOR_TO
3283: IFFALSE 3326
// begin uc_side = freesides [ 1 ] ;
3285: LD_ADDR_OWVAR 20
3289: PUSH
3290: LD_EXP 3
3294: PUSH
3295: LD_INT 1
3297: ARRAY
3298: ST_TO_ADDR
// id = createhuman ;
3299: LD_ADDR_VAR 0 1
3303: PUSH
3304: CALL_OW 44
3308: ST_TO_ADDR
// PlaceUnitArea ( id , Area03 , false ) ;
3309: LD_VAR 0 1
3313: PPUSH
3314: LD_INT 3
3316: PPUSH
3317: LD_INT 0
3319: PPUSH
3320: CALL_OW 49
// end ;
3324: GO 3282
3326: POP
3327: POP
// for k = 50 to 0 + i do
3328: LD_ADDR_VAR 0 3
3332: PUSH
3333: DOUBLE
3334: LD_INT 50
3336: DEC
3337: ST_TO_ADDR
3338: LD_INT 0
3340: PUSH
3341: LD_VAR 0 2
3345: PLUS
3346: PUSH
3347: FOR_TO
3348: IFFALSE 3431
// begin vc_chassis = m [ k mod 5 ] ;
3350: LD_ADDR_OWVAR 37
3354: PUSH
3355: LD_VAR 0 5
3359: PUSH
3360: LD_VAR 0 3
3364: PUSH
3365: LD_INT 5
3367: MOD
3368: ARRAY
3369: ST_TO_ADDR
// vc_weapon = l [ k mod 4 ] ;
3370: LD_ADDR_OWVAR 40
3374: PUSH
3375: LD_VAR 0 4
3379: PUSH
3380: LD_VAR 0 3
3384: PUSH
3385: LD_INT 4
3387: MOD
3388: ARRAY
3389: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
3390: LD_ADDR_OWVAR 20
3394: PUSH
3395: LD_EXP 3
3399: PUSH
3400: LD_INT 1
3402: ARRAY
3403: ST_TO_ADDR
// id = createvehicle ;
3404: LD_ADDR_VAR 0 1
3408: PUSH
3409: CALL_OW 45
3413: ST_TO_ADDR
// PlaceUnitArea ( id , Area05 , false ) ;
3414: LD_VAR 0 1
3418: PPUSH
3419: LD_INT 5
3421: PPUSH
3422: LD_INT 0
3424: PPUSH
3425: CALL_OW 49
// end ;
3429: GO 3347
3431: POP
3432: POP
// for k = 60 to 0 + i do
3433: LD_ADDR_VAR 0 3
3437: PUSH
3438: DOUBLE
3439: LD_INT 60
3441: DEC
3442: ST_TO_ADDR
3443: LD_INT 0
3445: PUSH
3446: LD_VAR 0 2
3450: PLUS
3451: PUSH
3452: FOR_TO
3453: IFFALSE 3536
// begin vc_chassis = m [ k mod 5 ] ;
3455: LD_ADDR_OWVAR 37
3459: PUSH
3460: LD_VAR 0 5
3464: PUSH
3465: LD_VAR 0 3
3469: PUSH
3470: LD_INT 5
3472: MOD
3473: ARRAY
3474: ST_TO_ADDR
// vc_weapon = l [ k mod 6 ] ;
3475: LD_ADDR_OWVAR 40
3479: PUSH
3480: LD_VAR 0 4
3484: PUSH
3485: LD_VAR 0 3
3489: PUSH
3490: LD_INT 6
3492: MOD
3493: ARRAY
3494: ST_TO_ADDR
// uc_side = freesides [ 1 ] ;
3495: LD_ADDR_OWVAR 20
3499: PUSH
3500: LD_EXP 3
3504: PUSH
3505: LD_INT 1
3507: ARRAY
3508: ST_TO_ADDR
// id = createvehicle ;
3509: LD_ADDR_VAR 0 1
3513: PUSH
3514: CALL_OW 45
3518: ST_TO_ADDR
// PlaceUnitArea ( id , Area11 , false ) ;
3519: LD_VAR 0 1
3523: PPUSH
3524: LD_INT 11
3526: PPUSH
3527: LD_INT 0
3529: PPUSH
3530: CALL_OW 49
// end ;
3534: GO 3452
3536: POP
3537: POP
// wait ( time ) ;
3538: LD_VAR 0 8
3542: PPUSH
3543: CALL_OW 67
// until i = 1000000 end ;
3547: LD_VAR 0 2
3551: PUSH
3552: LD_INT 1000000
3554: EQUAL
3555: IFFALSE 2853
3557: PPOPN 8
3559: END
// every 0 0$25 do var time , i ;
3560: GO 3562
3562: DISABLE
3563: LD_INT 0
3565: PPUSH
3566: PPUSH
// begin time = rand ( 0 0$05 , 0 0$25 ) ;
3567: LD_ADDR_VAR 0 1
3571: PUSH
3572: LD_INT 175
3574: PPUSH
3575: LD_INT 875
3577: PPUSH
3578: CALL_OW 12
3582: ST_TO_ADDR
// wait ( time ) ;
3583: LD_VAR 0 1
3587: PPUSH
3588: CALL_OW 67
// CreateCratesArea ( 3 , Area06 , true ) ;
3592: LD_INT 3
3594: PPUSH
3595: LD_INT 6
3597: PPUSH
3598: LD_INT 1
3600: PPUSH
3601: CALL_OW 55
// CreateCratesArea ( 3 , Area07 , true ) ;
3605: LD_INT 3
3607: PPUSH
3608: LD_INT 7
3610: PPUSH
3611: LD_INT 1
3613: PPUSH
3614: CALL_OW 55
// wait ( 0 0$35 - time ) ;
3618: LD_INT 1225
3620: PUSH
3621: LD_VAR 0 1
3625: MINUS
3626: PPUSH
3627: CALL_OW 67
// enable ;
3631: ENABLE
// end ;
3632: PPOPN 2
3634: END
// every 2 2$30 do var time ;
3635: GO 3637
3637: DISABLE
3638: LD_INT 0
3640: PPUSH
// begin time = rand ( 0 0$05 , 0 0$25 ) ;
3641: LD_ADDR_VAR 0 1
3645: PUSH
3646: LD_INT 175
3648: PPUSH
3649: LD_INT 875
3651: PPUSH
3652: CALL_OW 12
3656: ST_TO_ADDR
// wait ( time ) ;
3657: LD_VAR 0 1
3661: PPUSH
3662: CALL_OW 67
// CreateResourcesArea ( Mat_siberit , 1 , sibleft , true ) ;
3666: LD_INT 3
3668: PPUSH
3669: LD_INT 1
3671: PPUSH
3672: LD_INT 16
3674: PPUSH
3675: LD_INT 1
3677: PPUSH
3678: CALL_OW 59
// CreateResourcesArea ( Mat_siberit , 1 , sibright , true ) ;
3682: LD_INT 3
3684: PPUSH
3685: LD_INT 1
3687: PPUSH
3688: LD_INT 17
3690: PPUSH
3691: LD_INT 1
3693: PPUSH
3694: CALL_OW 59
// wait ( 0 0$30 - time ) ;
3698: LD_INT 1050
3700: PUSH
3701: LD_VAR 0 1
3705: MINUS
3706: PPUSH
3707: CALL_OW 67
// enable ;
3711: ENABLE
// end ;
3712: PPOPN 1
3714: END
// every 0 0$45 do var time ;
3715: GO 3717
3717: DISABLE
3718: LD_INT 0
3720: PPUSH
// begin time = rand ( 0 0$01 , 0 0$14 ) ;
3721: LD_ADDR_VAR 0 1
3725: PUSH
3726: LD_INT 35
3728: PPUSH
3729: LD_INT 490
3731: PPUSH
3732: CALL_OW 12
3736: ST_TO_ADDR
// wait ( time ) ;
3737: LD_VAR 0 1
3741: PPUSH
3742: CALL_OW 67
// CreateResourcesArea ( Mat_oil , 2 , oilleft , true ) ;
3746: LD_INT 2
3748: PPUSH
3749: LD_INT 2
3751: PPUSH
3752: LD_INT 18
3754: PPUSH
3755: LD_INT 1
3757: PPUSH
3758: CALL_OW 59
// CreateResourcesArea ( Mat_oil , 2 , oilright , true ) ;
3762: LD_INT 2
3764: PPUSH
3765: LD_INT 2
3767: PPUSH
3768: LD_INT 19
3770: PPUSH
3771: LD_INT 1
3773: PPUSH
3774: CALL_OW 59
// wait ( 0 0$15 - time ) ;
3778: LD_INT 525
3780: PUSH
3781: LD_VAR 0 1
3785: MINUS
3786: PPUSH
3787: CALL_OW 67
// enable ;
3791: ENABLE
// end ;
3792: PPOPN 1
3794: END
// every 2 2$45 do var time , skill , id ;
3795: GO 3797
3797: DISABLE
3798: LD_INT 0
3800: PPUSH
3801: PPUSH
3802: PPUSH
// begin skill = ( waves / 7 ) mod 11 ;
3803: LD_ADDR_VAR 0 2
3807: PUSH
3808: LD_EXP 1
3812: PUSH
3813: LD_INT 7
3815: DIVREAL
3816: PUSH
3817: LD_INT 11
3819: MOD
3820: ST_TO_ADDR
// time = rand ( 0 0$01 , 0 0$14 ) ;
3821: LD_ADDR_VAR 0 1
3825: PUSH
3826: LD_INT 35
3828: PPUSH
3829: LD_INT 490
3831: PPUSH
3832: CALL_OW 12
3836: ST_TO_ADDR
// wait ( time ) ;
3837: LD_VAR 0 1
3841: PPUSH
3842: CALL_OW 67
// uc_side = 0 ;
3846: LD_ADDR_OWVAR 20
3850: PUSH
3851: LD_INT 0
3853: ST_TO_ADDR
// uc_nation = 0 ;
3854: LD_ADDR_OWVAR 21
3858: PUSH
3859: LD_INT 0
3861: ST_TO_ADDR
// hc_class = 12 ;
3862: LD_ADDR_OWVAR 28
3866: PUSH
3867: LD_INT 12
3869: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
3870: LD_ADDR_OWVAR 31
3874: PUSH
3875: LD_VAR 0 2
3879: PUSH
3880: LD_VAR 0 2
3884: PUSH
3885: LD_VAR 0 2
3889: PUSH
3890: LD_VAR 0 2
3894: PUSH
3895: EMPTY
3896: LIST
3897: LIST
3898: LIST
3899: LIST
3900: ST_TO_ADDR
// hc_name =  ;
3901: LD_ADDR_OWVAR 26
3905: PUSH
3906: LD_STRING 
3908: ST_TO_ADDR
// id = createhuman ;
3909: LD_ADDR_VAR 0 3
3913: PUSH
3914: CALL_OW 44
3918: ST_TO_ADDR
// PlaceUnitArea ( id , monkeleft , false ) ;
3919: LD_VAR 0 3
3923: PPUSH
3924: LD_INT 20
3926: PPUSH
3927: LD_INT 0
3929: PPUSH
3930: CALL_OW 49
// id = createhuman ;
3934: LD_ADDR_VAR 0 3
3938: PUSH
3939: CALL_OW 44
3943: ST_TO_ADDR
// PlaceUnitArea ( id , monkeright , false ) ;
3944: LD_VAR 0 3
3948: PPUSH
3949: LD_INT 21
3951: PPUSH
3952: LD_INT 0
3954: PPUSH
3955: CALL_OW 49
// wait ( 0 0$15 - time ) ;
3959: LD_INT 525
3961: PUSH
3962: LD_VAR 0 1
3966: MINUS
3967: PPUSH
3968: CALL_OW 67
// enable ;
3972: ENABLE
// end ;
3973: PPOPN 3
3975: END
// every 0 0$01 do var p1 , a1 , p2 , a2 , i ;
3976: GO 3978
3978: DISABLE
3979: LD_INT 0
3981: PPUSH
3982: PPUSH
3983: PPUSH
3984: PPUSH
3985: PPUSH
// begin wait ( 0 0$01 ) ;
3986: LD_INT 35
3988: PPUSH
3989: CALL_OW 67
// p1 = FilterAllUnits ( [ f_side , Setup [ 1 ] ] ) ;
3993: LD_ADDR_VAR 0 1
3997: PUSH
3998: LD_INT 22
4000: PUSH
4001: LD_EXP 7
4005: PUSH
4006: LD_INT 1
4008: ARRAY
4009: PUSH
4010: EMPTY
4011: LIST
4012: LIST
4013: PPUSH
4014: CALL_OW 69
4018: ST_TO_ADDR
// a1 = FilterAllUnits ( [ f_side , freesides [ 1 ] ] ) ;
4019: LD_ADDR_VAR 0 2
4023: PUSH
4024: LD_INT 22
4026: PUSH
4027: LD_EXP 3
4031: PUSH
4032: LD_INT 1
4034: ARRAY
4035: PUSH
4036: EMPTY
4037: LIST
4038: LIST
4039: PPUSH
4040: CALL_OW 69
4044: ST_TO_ADDR
// for i in a1 do
4045: LD_ADDR_VAR 0 5
4049: PUSH
4050: LD_VAR 0 2
4054: PUSH
4055: FOR_IN
4056: IFFALSE 4084
// ComAttackUnit ( i , NearestUnitToUnit ( p1 , i ) ) ;
4058: LD_VAR 0 5
4062: PPUSH
4063: LD_VAR 0 1
4067: PPUSH
4068: LD_VAR 0 5
4072: PPUSH
4073: CALL_OW 74
4077: PPUSH
4078: CALL_OW 115
4082: GO 4055
4084: POP
4085: POP
// enable ;
4086: ENABLE
// end ;
4087: PPOPN 5
4089: END
// export function ShowTimer ; var AllStrings , ExtraStrings ; begin
4090: LD_INT 0
4092: PPUSH
4093: PPUSH
4094: PPUSH
// if timer <= 0 then
4095: LD_EXP 2
4099: PUSH
4100: LD_INT 0
4102: LESSEQUAL
4103: IFFALSE 4113
// timer = 60 ;
4105: LD_ADDR_EXP 2
4109: PUSH
4110: LD_INT 60
4112: ST_TO_ADDR
// timer = timer - 1 ;
4113: LD_ADDR_EXP 2
4117: PUSH
4118: LD_EXP 2
4122: PUSH
4123: LD_INT 1
4125: MINUS
4126: ST_TO_ADDR
// AllStrings := [ #timer , tick ] ;
4127: LD_ADDR_VAR 0 2
4131: PUSH
4132: LD_STRING #timer
4134: PUSH
4135: LD_OWVAR 1
4139: PUSH
4140: EMPTY
4141: LIST
4142: LIST
4143: ST_TO_ADDR
// ExtraStrings := [ #wave , waves ] ^  ^ [ #newwave , timer ] ;
4144: LD_ADDR_VAR 0 3
4148: PUSH
4149: LD_STRING #wave
4151: PUSH
4152: LD_EXP 1
4156: PUSH
4157: EMPTY
4158: LIST
4159: LIST
4160: PUSH
4161: LD_STRING 
4163: ADD
4164: PUSH
4165: LD_STRING #newwave
4167: PUSH
4168: LD_EXP 2
4172: PUSH
4173: EMPTY
4174: LIST
4175: LIST
4176: ADD
4177: ST_TO_ADDR
// if ( ExtraStrings ) then
4178: LD_VAR 0 3
4182: IFFALSE 4204
// AllStrings := AllStrings ^  ^ ExtraStrings ;
4184: LD_ADDR_VAR 0 2
4188: PUSH
4189: LD_VAR 0 2
4193: PUSH
4194: LD_STRING 
4196: ADD
4197: PUSH
4198: LD_VAR 0 3
4202: ADD
4203: ST_TO_ADDR
// Display_Strings := AllStrings ;
4204: LD_ADDR_OWVAR 47
4208: PUSH
4209: LD_VAR 0 2
4213: ST_TO_ADDR
// end ;
4214: LD_VAR 0 1
4218: RET
// every 0 0$1 do
4219: GO 4221
4221: DISABLE
// begin ShowTimer ;
4222: CALL 4090 0 0
// enable ;
4226: ENABLE
// end ;
4227: END
// on UnitDestroyed ( u ) do var i , k ;
4228: LD_INT 0
4230: PPUSH
4231: PPUSH
// begin if GetType ( u ) = unit_human then
4232: LD_VAR 0 1
4236: PPUSH
4237: CALL_OW 247
4241: PUSH
4242: LD_INT 1
4244: EQUAL
4245: IFFALSE 4485
// if GetClass ( u ) = 12 and Setup [ 6 ] = 1 then
4247: LD_VAR 0 1
4251: PPUSH
4252: CALL_OW 257
4256: PUSH
4257: LD_INT 12
4259: EQUAL
4260: PUSH
4261: LD_EXP 7
4265: PUSH
4266: LD_INT 6
4268: ARRAY
4269: PUSH
4270: LD_INT 1
4272: EQUAL
4273: AND
4274: IFFALSE 4280
// exit else
4276: GO 4485
4278: GO 4485
// for i = 1 to playersides do
4280: LD_ADDR_VAR 0 2
4284: PUSH
4285: DOUBLE
4286: LD_INT 1
4288: DEC
4289: ST_TO_ADDR
4290: LD_EXP 4
4294: PUSH
4295: FOR_TO
4296: IFFALSE 4483
// if GetSide ( u ) = playersides [ i ] then
4298: LD_VAR 0 1
4302: PPUSH
4303: CALL_OW 255
4307: PUSH
4308: LD_EXP 4
4312: PUSH
4313: LD_VAR 0 2
4317: ARRAY
4318: EQUAL
4319: IFFALSE 4481
// begin if GetClass ( u ) = 12 then
4321: LD_VAR 0 1
4325: PPUSH
4326: CALL_OW 257
4330: PUSH
4331: LD_INT 12
4333: EQUAL
4334: IFFALSE 4428
// begin if Setup [ 6 ] = 3 then
4336: LD_EXP 7
4340: PUSH
4341: LD_INT 6
4343: ARRAY
4344: PUSH
4345: LD_INT 3
4347: EQUAL
4348: IFFALSE 4387
// apequeue := Replace ( apequeue , i , apequeue [ i ] + 1 ) else
4350: LD_ADDR_EXP 6
4354: PUSH
4355: LD_EXP 6
4359: PPUSH
4360: LD_VAR 0 2
4364: PPUSH
4365: LD_EXP 6
4369: PUSH
4370: LD_VAR 0 2
4374: ARRAY
4375: PUSH
4376: LD_INT 1
4378: PLUS
4379: PPUSH
4380: CALL_OW 1
4384: ST_TO_ADDR
4385: GO 4422
// queue := Replace ( queue , i , queue [ i ] + 1 ) ;
4387: LD_ADDR_EXP 5
4391: PUSH
4392: LD_EXP 5
4396: PPUSH
4397: LD_VAR 0 2
4401: PPUSH
4402: LD_EXP 5
4406: PUSH
4407: LD_VAR 0 2
4411: ARRAY
4412: PUSH
4413: LD_INT 1
4415: PLUS
4416: PPUSH
4417: CALL_OW 1
4421: ST_TO_ADDR
// PrepareRespawn ;
4422: CALL 4488 0 0
// end else
4426: GO 4481
// begin queue := Replace ( queue , i , queue [ i ] + 1 ) ;
4428: LD_ADDR_EXP 5
4432: PUSH
4433: LD_EXP 5
4437: PPUSH
4438: LD_VAR 0 2
4442: PPUSH
4443: LD_EXP 5
4447: PUSH
4448: LD_VAR 0 2
4452: ARRAY
4453: PUSH
4454: LD_INT 1
4456: PLUS
4457: PPUSH
4458: CALL_OW 1
4462: ST_TO_ADDR
// if Setup [ 5 ] <> 1 then
4463: LD_EXP 7
4467: PUSH
4468: LD_INT 5
4470: ARRAY
4471: PUSH
4472: LD_INT 1
4474: NONEQUAL
4475: IFFALSE 4481
// PrepareRespawn ;
4477: CALL 4488 0 0
// end ; end ;
4481: GO 4295
4483: POP
4484: POP
// end ;
4485: PPOPN 3
4487: END
// export function PrepareRespawn ; var depots , b , i , k , l , clock ; begin
4488: LD_INT 0
4490: PPUSH
4491: PPUSH
4492: PPUSH
4493: PPUSH
4494: PPUSH
4495: PPUSH
4496: PPUSH
// clock = 2 2$30 ;
4497: LD_ADDR_VAR 0 7
4501: PUSH
4502: LD_INT 5250
4504: ST_TO_ADDR
// if Setup [ 5 ] = 2 then
4505: LD_EXP 7
4509: PUSH
4510: LD_INT 5
4512: ARRAY
4513: PUSH
4514: LD_INT 2
4516: EQUAL
4517: IFFALSE 4527
// clock = 4 4$30 ;
4519: LD_ADDR_VAR 0 7
4523: PUSH
4524: LD_INT 9450
4526: ST_TO_ADDR
// if Setup [ 5 ] = 3 then
4527: LD_EXP 7
4531: PUSH
4532: LD_INT 5
4534: ARRAY
4535: PUSH
4536: LD_INT 3
4538: EQUAL
4539: IFFALSE 4549
// clock = 2 2$00 ;
4541: LD_ADDR_VAR 0 7
4545: PUSH
4546: LD_INT 4200
4548: ST_TO_ADDR
// wait ( clock ) ;
4549: LD_VAR 0 7
4553: PPUSH
4554: CALL_OW 67
// for i = 1 to playersides do
4558: LD_ADDR_VAR 0 4
4562: PUSH
4563: DOUBLE
4564: LD_INT 1
4566: DEC
4567: ST_TO_ADDR
4568: LD_EXP 4
4572: PUSH
4573: FOR_TO
4574: IFFALSE 5219
// if apequeue [ i ] > 0 then
4576: LD_EXP 6
4580: PUSH
4581: LD_VAR 0 4
4585: ARRAY
4586: PUSH
4587: LD_INT 0
4589: GREATER
4590: IFFALSE 4879
// begin depots = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , playersides [ i ] ] ] ) ;
4592: LD_ADDR_VAR 0 2
4596: PUSH
4597: LD_INT 2
4599: PUSH
4600: LD_INT 30
4602: PUSH
4603: LD_INT 0
4605: PUSH
4606: EMPTY
4607: LIST
4608: LIST
4609: PUSH
4610: LD_INT 30
4612: PUSH
4613: LD_INT 1
4615: PUSH
4616: EMPTY
4617: LIST
4618: LIST
4619: PUSH
4620: EMPTY
4621: LIST
4622: LIST
4623: LIST
4624: PUSH
4625: LD_INT 22
4627: PUSH
4628: LD_EXP 4
4632: PUSH
4633: LD_VAR 0 4
4637: ARRAY
4638: PUSH
4639: EMPTY
4640: LIST
4641: LIST
4642: PUSH
4643: EMPTY
4644: LIST
4645: LIST
4646: PPUSH
4647: CALL_OW 69
4651: ST_TO_ADDR
// if depots then
4652: LD_VAR 0 2
4656: IFFALSE 4854
// for l = 1 to apequeue [ i ] do
4658: LD_ADDR_VAR 0 6
4662: PUSH
4663: DOUBLE
4664: LD_INT 1
4666: DEC
4667: ST_TO_ADDR
4668: LD_EXP 6
4672: PUSH
4673: LD_VAR 0 4
4677: ARRAY
4678: PUSH
4679: FOR_TO
4680: IFFALSE 4852
// begin b := depots [ Rand ( 1 , depots ) ] ;
4682: LD_ADDR_VAR 0 3
4686: PUSH
4687: LD_VAR 0 2
4691: PUSH
4692: LD_INT 1
4694: PPUSH
4695: LD_VAR 0 2
4699: PPUSH
4700: CALL_OW 12
4704: ARRAY
4705: ST_TO_ADDR
// uc_side = playersides [ i ] ;
4706: LD_ADDR_OWVAR 20
4710: PUSH
4711: LD_EXP 4
4715: PUSH
4716: LD_VAR 0 4
4720: ARRAY
4721: ST_TO_ADDR
// uc_nation = Setup [ 2 ] ;
4722: LD_ADDR_OWVAR 21
4726: PUSH
4727: LD_EXP 7
4731: PUSH
4732: LD_INT 2
4734: ARRAY
4735: ST_TO_ADDR
// hc_name =  ;
4736: LD_ADDR_OWVAR 26
4740: PUSH
4741: LD_STRING 
4743: ST_TO_ADDR
// hc_skills = [ waves / 7 mod 11 , waves / 7 mod 11 , waves / 7 mod 11 , waves / 7 mod 11 ] ;
4744: LD_ADDR_OWVAR 31
4748: PUSH
4749: LD_EXP 1
4753: PUSH
4754: LD_INT 7
4756: DIVREAL
4757: PUSH
4758: LD_INT 11
4760: MOD
4761: PUSH
4762: LD_EXP 1
4766: PUSH
4767: LD_INT 7
4769: DIVREAL
4770: PUSH
4771: LD_INT 11
4773: MOD
4774: PUSH
4775: LD_EXP 1
4779: PUSH
4780: LD_INT 7
4782: DIVREAL
4783: PUSH
4784: LD_INT 11
4786: MOD
4787: PUSH
4788: LD_EXP 1
4792: PUSH
4793: LD_INT 7
4795: DIVREAL
4796: PUSH
4797: LD_INT 11
4799: MOD
4800: PUSH
4801: EMPTY
4802: LIST
4803: LIST
4804: LIST
4805: LIST
4806: ST_TO_ADDR
// hc_class = 12 ;
4807: LD_ADDR_OWVAR 28
4811: PUSH
4812: LD_INT 12
4814: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( b ) , GetY ( b ) , 13 , true ) ;
4815: CALL_OW 44
4819: PPUSH
4820: LD_VAR 0 3
4824: PPUSH
4825: CALL_OW 250
4829: PPUSH
4830: LD_VAR 0 3
4834: PPUSH
4835: CALL_OW 251
4839: PPUSH
4840: LD_INT 13
4842: PPUSH
4843: LD_INT 1
4845: PPUSH
4846: CALL_OW 50
// end ;
4850: GO 4679
4852: POP
4853: POP
// apequeue := Replace ( apequeue , i , 0 ) ;
4854: LD_ADDR_EXP 6
4858: PUSH
4859: LD_EXP 6
4863: PPUSH
4864: LD_VAR 0 4
4868: PPUSH
4869: LD_INT 0
4871: PPUSH
4872: CALL_OW 1
4876: ST_TO_ADDR
// end else
4877: GO 5217
// if queue [ i ] > 0 then
4879: LD_EXP 5
4883: PUSH
4884: LD_VAR 0 4
4888: ARRAY
4889: PUSH
4890: LD_INT 0
4892: GREATER
4893: IFFALSE 5217
// begin depots = FilterAllUnits ( [ [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_side , playersides [ i ] ] ] ) ;
4895: LD_ADDR_VAR 0 2
4899: PUSH
4900: LD_INT 2
4902: PUSH
4903: LD_INT 30
4905: PUSH
4906: LD_INT 0
4908: PUSH
4909: EMPTY
4910: LIST
4911: LIST
4912: PUSH
4913: LD_INT 30
4915: PUSH
4916: LD_INT 1
4918: PUSH
4919: EMPTY
4920: LIST
4921: LIST
4922: PUSH
4923: EMPTY
4924: LIST
4925: LIST
4926: LIST
4927: PUSH
4928: LD_INT 22
4930: PUSH
4931: LD_EXP 4
4935: PUSH
4936: LD_VAR 0 4
4940: ARRAY
4941: PUSH
4942: EMPTY
4943: LIST
4944: LIST
4945: PUSH
4946: EMPTY
4947: LIST
4948: LIST
4949: PPUSH
4950: CALL_OW 69
4954: ST_TO_ADDR
// if depots then
4955: LD_VAR 0 2
4959: IFFALSE 5206
// begin for l = 1 to queue [ i ] do
4961: LD_ADDR_VAR 0 6
4965: PUSH
4966: DOUBLE
4967: LD_INT 1
4969: DEC
4970: ST_TO_ADDR
4971: LD_EXP 5
4975: PUSH
4976: LD_VAR 0 4
4980: ARRAY
4981: PUSH
4982: FOR_TO
4983: IFFALSE 5179
// begin b := depots [ Rand ( 1 , depots ) ] ;
4985: LD_ADDR_VAR 0 3
4989: PUSH
4990: LD_VAR 0 2
4994: PUSH
4995: LD_INT 1
4997: PPUSH
4998: LD_VAR 0 2
5002: PPUSH
5003: CALL_OW 12
5007: ARRAY
5008: ST_TO_ADDR
// uc_side = playersides [ i ] ;
5009: LD_ADDR_OWVAR 20
5013: PUSH
5014: LD_EXP 4
5018: PUSH
5019: LD_VAR 0 4
5023: ARRAY
5024: ST_TO_ADDR
// uc_nation = Setup [ 2 ] ;
5025: LD_ADDR_OWVAR 21
5029: PUSH
5030: LD_EXP 7
5034: PUSH
5035: LD_INT 2
5037: ARRAY
5038: ST_TO_ADDR
// hc_name =  ;
5039: LD_ADDR_OWVAR 26
5043: PUSH
5044: LD_STRING 
5046: ST_TO_ADDR
// hc_skills = [ waves / 5 mod 11 , waves / 5 mod 11 , waves / 5 mod 11 , waves / 5 mod 11 ] ;
5047: LD_ADDR_OWVAR 31
5051: PUSH
5052: LD_EXP 1
5056: PUSH
5057: LD_INT 5
5059: DIVREAL
5060: PUSH
5061: LD_INT 11
5063: MOD
5064: PUSH
5065: LD_EXP 1
5069: PUSH
5070: LD_INT 5
5072: DIVREAL
5073: PUSH
5074: LD_INT 11
5076: MOD
5077: PUSH
5078: LD_EXP 1
5082: PUSH
5083: LD_INT 5
5085: DIVREAL
5086: PUSH
5087: LD_INT 11
5089: MOD
5090: PUSH
5091: LD_EXP 1
5095: PUSH
5096: LD_INT 5
5098: DIVREAL
5099: PUSH
5100: LD_INT 11
5102: MOD
5103: PUSH
5104: EMPTY
5105: LIST
5106: LIST
5107: LIST
5108: LIST
5109: ST_TO_ADDR
// hc_class = Rand ( 1 , 4 ) ;
5110: LD_ADDR_OWVAR 28
5114: PUSH
5115: LD_INT 1
5117: PPUSH
5118: LD_INT 4
5120: PPUSH
5121: CALL_OW 12
5125: ST_TO_ADDR
// hc_sex = Rand ( 1 , 2 ) ;
5126: LD_ADDR_OWVAR 27
5130: PUSH
5131: LD_INT 1
5133: PPUSH
5134: LD_INT 2
5136: PPUSH
5137: CALL_OW 12
5141: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( b ) , GetY ( b ) , 13 , true ) ;
5142: CALL_OW 44
5146: PPUSH
5147: LD_VAR 0 3
5151: PPUSH
5152: CALL_OW 250
5156: PPUSH
5157: LD_VAR 0 3
5161: PPUSH
5162: CALL_OW 251
5166: PPUSH
5167: LD_INT 13
5169: PPUSH
5170: LD_INT 1
5172: PPUSH
5173: CALL_OW 50
// end ;
5177: GO 4982
5179: POP
5180: POP
// queue := Replace ( queue , i , 0 ) ;
5181: LD_ADDR_EXP 5
5185: PUSH
5186: LD_EXP 5
5190: PPUSH
5191: LD_VAR 0 4
5195: PPUSH
5196: LD_INT 0
5198: PPUSH
5199: CALL_OW 1
5203: ST_TO_ADDR
// end else
5204: GO 5217
// begin wait ( 1 1$00 ) ;
5206: LD_INT 2100
5208: PPUSH
5209: CALL_OW 67
// PrepareRespawn ;
5213: CALL 4488 0 0
// end ; end ;
5217: GO 4573
5219: POP
5220: POP
// end ;
5221: LD_VAR 0 1
5225: RET
// every 0 0$03 do var i , l , c ;
5226: GO 5228
5228: DISABLE
5229: LD_INT 0
5231: PPUSH
5232: PPUSH
5233: PPUSH
// begin for i = 1 to playersides do
5234: LD_ADDR_VAR 0 1
5238: PUSH
5239: DOUBLE
5240: LD_INT 1
5242: DEC
5243: ST_TO_ADDR
5244: LD_EXP 4
5248: PUSH
5249: FOR_TO
5250: IFFALSE 5325
// if FilterAllUnits ( [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] , [ f_side , playersides [ i ] ] ] ) = 0 then
5252: LD_INT 2
5254: PUSH
5255: LD_INT 30
5257: PUSH
5258: LD_INT 0
5260: PUSH
5261: EMPTY
5262: LIST
5263: LIST
5264: PUSH
5265: LD_INT 30
5267: PUSH
5268: LD_INT 1
5270: PUSH
5271: EMPTY
5272: LIST
5273: LIST
5274: PUSH
5275: LD_INT 22
5277: PUSH
5278: LD_EXP 4
5282: PUSH
5283: LD_VAR 0 1
5287: ARRAY
5288: PUSH
5289: EMPTY
5290: LIST
5291: LIST
5292: PUSH
5293: EMPTY
5294: LIST
5295: LIST
5296: LIST
5297: LIST
5298: PPUSH
5299: CALL_OW 69
5303: PUSH
5304: LD_INT 0
5306: EQUAL
5307: IFFALSE 5323
// l = l + 1 ;
5309: LD_ADDR_VAR 0 2
5313: PUSH
5314: LD_VAR 0 2
5318: PUSH
5319: LD_INT 1
5321: PLUS
5322: ST_TO_ADDR
5323: GO 5249
5325: POP
5326: POP
// if l = playersides then
5327: LD_VAR 0 2
5331: PUSH
5332: LD_EXP 4
5336: EQUAL
5337: IFFALSE 5353
// begin wait ( 0 0$03 ) ;
5339: LD_INT 105
5341: PPUSH
5342: CALL_OW 67
// YouLost ( lose ) ;
5346: LD_STRING lose
5348: PPUSH
5349: CALL_OW 104
// end ; enable ;
5353: ENABLE
// end ;
5354: PPOPN 3
5356: END
